无缝创造:深入探讨 Web 动画的开发流程
在当今数字时代,Web 设计不再仅仅是静态的图形和文本的展示,而是通过生动的 Web 动画来增添活力和交互性。Web 动画作为现代 Web 设计的核心元素之一,为 Web 设计师和开发者提供了丰富的创作空间。这也正是我为什么要这本本系列(《Web 动画之旅》)的初衷。
如果跟随本系列学习到这里,我想你已经掌握了创作 Web 动画的各种知识,例如,动画的基础理论、设计原则、动画作用、动画开发技术和技巧等。简单地说,你能独立创作符合需求的 Web 动画,并且在此过程你已经掌握了一些技巧,也积累了一定的经验。
另外,在创作 Web 动画的过程中,你肯定感受到了快乐与成就感。但与此同时,我想你也感受到了痛苦和沮丧感。这意味着,快乐与痛苦并存。其中令你感到不悦的主要原因之一是,创作复杂的、炫酷的动画很费时间和精力。在这个过程中,不管是 Web 设计师还是开发者,总是期望有更快速、更高效的方式能创作出质量更高的 Web 动画。
那么,接一下来,我们将深入了解 Web 动画的工作流程,介绍 Web 设计师和开发者如何协同工作,以创造既引人注目又流畅的动画效果。无论你是初学者还是经验丰富的专业人士,都将为你揭示 Web 动画的奥秘,助你在创造出色的 Web 体验方面迈出坚实的步伐。
Web 动画开发的痛点
想象一下,你充满创意地设计了一个令人惊叹的网站,充满了绚丽的 Web 动画。但是在这个光鲜的世界背后,有一些我们称之为"痛点"的小石子,可能会让你在动画开发的旅程中感到有点颠簸。这些“痛点”也是我们在 Web 动画开发中所面临的一些挑战,这些挑战有时让我们感到头痛,但也是我们创造精彩作品时的灵感来源。
首先,就像你们都知道的那样,设计和开发之间的协作往往是一项复杂的任务。Web 设计师们的创造力是无限的,但在将这些概念转化为可行的、流畅运行的 Web 动画时,我们常常需要进行深入的技术讨论。这就需要我们建立一种无障碍的沟通方式,确保设计的愿景能够在技术上得到实现。
其次,性能和用户体验一直是我们需要在动画开发中小心应对的方面。我们常常追求那些引人注目,炫酷的动画效果,但这可能会导致页面加载速度的减缓,对用户体验造成不利影响。因此,我们必须在追求创意的同时,时刻保持对性能的关注,以确保用户能够流畅地与我们的作品互动。
兼容性问题也是我们不得不面对的挑战之一。不同浏览器、不同设备,它们对 Web 动画的解释和渲染方式可能存在差异,就是要求我们写出兼容性强、稳定运行的代码。而这往往需要我们进行繁琐的测试和调试工作,确保我们的动画在各种环境中都能够正常呈现。
学习新技术是我们作为 Web 开发者和设计师不可避免的任务。新的库、框架和工具层出不穷,我们需要不断保持学习的态度,跟进技术的最新进展。这既是一项挑战,也是一种机会,因为只有不断学习,我们才能创造出更为前卫和令人惊艳的动画效果。
调试和优化可能是我们工作中比较冗长的环节之一。当我们的动画遇到问题时,我们需要深入了解渲染机制,通过浏览器开发者工具找到问题的根源。同时,为了提高性能,我们需要仔细优化我们的代码,这可能需要花费相当一部分时间。
最后,复杂的交互设计是我们现代 Web 动画中常常面临的挑战。我们不再仅仅追求静态的、观赏性的动画,而是更多地将用户的交互融入其中。这就需要我们在设计和开发过程中更深入地思考用户体验,确保我们的动画不仅令人印象深刻,还能够提高用户的参与感。
简单的归纳一下上面所提到的这些挑战,以便于你在创作动画过程能有一个心理准备和更好的应对。
- 团队协作: 如果你在一个团队中工作,那么与设计师和其他开发者协同工作可能是一个挑战。有时设计师的创意和开发的可行性之间存在差距,这就需要更多的沟通和协调,以确保最终呈现的动画符合所有人的期望。
- 性能问题: 想象一下,你的动画在你的开发环境中运行得非常流畅,但当你将它带到真实的浏览器中时,突然感觉比龟速还要慢。这就是性能问题,即使在高性能设备上也可能发生。大量的元素和复杂的动画轨迹可能成为性能的绊脚石。解决这个问题可能需要对你的代码进行调优和性能测试。
- 兼容性困扰: 兼容性问题,简直是每个开发者的梦魇。你的动画在一个浏览器中运行得很完美,但在另一个浏览器中却一团糟。这就是浏览器兼容性问题,不同的浏览器对于 CSS 、JavaScript 和 SVG 的支持程度可能会有所不同。这可能需要你额外的时间来解决和测试,以确保用户在各种浏览器中都能够欣赏到你的杰作。
- 调试困难: 当你的动画突然停滞或者不按预期运行时,你可能会感到有点手足无措。调试 Web 动画可能相对复杂,需要你深入了解你的代码并使用浏览器的开发者工具。了解如何定位问题和使用调试工具是一个逐渐培养的技能。
- 复杂性和维护: 刚刚完成了一个引人注目的动画,但过了几个月,你突然意识到要维护和扩展它变得越来越困难。复杂的动画可能变得难以管理,而在保持代码整洁的同时添加新功能可能变得具有挑战性。
- 学习曲线: 对于新手来说,学习 Web 动画可能就像踏上一座高山。从基本的 CSS 动画到复杂的 JavaScript 库,学习的路途可能会颇具挑战性。理解关键概念、熟悉工具和语法,这一切都需要时间和耐心。但别担心,这也是一个充满乐趣和成就感的过程。
虽然这些痛点可能会让你感到有点头疼,但请相信,它们并非无法克服。每一位经验丰富的开发者都曾经是一个动画新手,他们通过不断的实践和学习逐渐掌握了这门艺术。所以,不要灰心,继续前行!在这个激动人心的动画世界里,每一个挑战都是一次成长的机会。
Web 动画开发流程的演进
本系列花了很多节课与大家一起探讨了 Web 动画开发的技术。换句话说,我们在创作 Web 动画时,可能会使用下面所列技术之一:
- 使用 CSS 创建过渡或关键帧动画
- 使用 WAAPI 创建动画
- 使用 SVG 和 SMIL 创建动画
- 基于 JavaScript 动画库创建动画
- CSS 、SVG 和 JavaScript 结合创建动画
不管使用哪一种技术来创建 Web 动画,它都有一个具体的开发流程。就目前为止,它主要有两种开发流程,其中之一就是传统动画开发模式和当下流行的动画开发模式。
传统动画开发模式
到目前为止,对于大多数 Web 开发者或者团队而言,还可以停留在传统 Web 动画开发模式中。传统 Web 动画开发模式和我们平常的 Web 开发模式非常的相似。这种模式主要有三个步骤:
- 首先由 Web 设计师们设计出 Web 动画
- 然后设计师们会将自己设计好的 Web 动画转换出视频或 GIF 等格式的演示文件,提供给 Web 开发者。与此同时,出色的 Web 设计师还会将动画相关的参数提供给 Web 开发者
- 最后,Web 开发者会根据设计师提供的动画演示文件和相关参数,使用代码来还原设计师所创作的动画,并最终呈现给用户
可以说,这是一个痛苦的过程,同时也增加了 Web 设计师和开发者的沟通成本,也增加了 Web 设计师的工作量。
除了增加了沟通成本之外,还有动画效果之间的差异。即使 Web 开发者用尽了各种方式最终还原出来的 Web 动画效果,总会令 Web 设计师略感失望。设计师总是认为自己的创意没有达到预期还原;开发者会认为这已然是最好的效果了。
也正因为如此,不管是设计师还是开发者,都在思考,都希望 Web 开发的模式能有所改变:动画效果能不能变得更丝滑一些、效果还原能不能更接近一些、能不能有一些创意和创新、能不能玩一些更有意思的,创作一些更复杂的交互动效。
当前动画开发模式
很多时候就是那样,因为痛才会有所改变。Web 设计师和开发者亦是如此,谁都希望自己是快乐的。在大家共同努力之下,Web 动画的开发模式也发生了很大的改变:
这个流程使得专业的人做更专业的事。Web 设计师专业的做他的设计,开发人员专业的做他的业务开发。因为 Web 动画的创建是由工具或者软件来实现,然后使用 JavaScript 脚本,将业务插入到转化后的 Web 动画中。
这意味着,现如今,Web 动画的开发模式变成了这样:
这也是时下 Web 动画主流开发模式。例如国外的 Lottie 和国内的 PAG 创建 Web 动画都使用了类似的开发流程:
Lottie: https://lottiefiles.com/
PAG: https://pag.art/
如果你经常要创作 SVG 动画,那么还可以直接使用 SVGator:
SVGator:https://www.svgator.com/
使用 Lottie-web 创建动画
Lottie-web:https://lottiefiles.com/web-player
为了让大家有一个更好的体验,接下来我将以 Lottie-web 为基础,和大家一起探讨如何基于 Lottie 快速创建 Web 动画。
如果你要创建的是 Web 动画,那么可以考虑 Lottie 的 Lottie-web 来创建。它可以快速,精确的实现 Web 设计师设计的 Web 动画效果。只不过,在使用 Lottie-web 时,需要具备几个前提条件:
- 获取 Lottie-web 库
- AE 导出的 JSON 文件(或其他平台获取的描述动画的 JSON 文件)
- 使用 Lottie-web 渲染 AE 导出的 JSON 数据,让动效在 Web 上渲染
获取 Lottie-web 库
获取 Lottie-web 最简单的方式是从 CDN 上获取。
<script src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js" integrity="sha512-jEnuDt6jfecCjthQAJ+ed0MTVA++5ZKmlUcmDGBv2vUI/REn6FuIdixLNnQT+vKusE2hhTk2is3cFvv5wA+Sgg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>除了引入静态的 CDN 地址之外,还可以使用 NPM 或 Yarn 来安装lottie-web:
npm i lottie-web
// 或
yarn add lottie-web然后在 JavaScript 中像下面这样引入相应的 Lottie-web 相关的脚本:
import lottieWeb from "https://cdn.skypack.dev/lottie-web";我们的演示案例都是在 Codepen 上呈现,你可以像下图这样引入 Lottie-web:
打开浏览器开发者调试器,你将看到 lottieWeb 对象相关的参数:
你可以调用 loadAnimation 来渲染动画:
<div id="lottie"></div>const animation = lottieWeb.loadAnimation({
// 动效加载到的DOM元素
container: document.getElementById("lottie"), // 必须项
// 包含动效的JSON文件的相对路径,也可以是绝对路径
// 必须项,描述动效的JSON文件,一般由AE软件中导出的JSON文件
path: "https://lottie.host/7401522f-2d8b-4049-ad18-eb0edb6af224/CE9lFrNlEH.json",
// 动效渲染出来的格式,可以是svg、canvas和html
renderer: "svg", // 必须项,除了svg选择之外还可以是canvas和html
// 用于指定动效是否循环播放,true是循环播放,false不是循环播放
loop: true, // 可选项
// 指定动效是不是加载后就立即播放,true是立即播放,false不是立即播放
autoplay: true, // 可选项
});这个时候渲染出来的 Web 动画效果如下图所示:
注意,具体渲染出什么样的动画效果是由 loadAnimation 中的 path 参数引入的 .json 文件决定的。这也意味着,你所引入的 .json 文件是要符合 Lottie-web 的规范与要求,否则有可能不会正常渲染出所需动画效果。你也可以通过 loadAnimation 提供的参数来控制动画的播放方式,例如是否循环播放。
获取 JSON 数据
正如前面示例所示,使用 Lottie-web 有一个关键点,就是需要一个描述动画效果的 JSON 文件。这个 JSON 文件可以是由 AE 设计软件导出来,也可以在第三方平台上获取。如果你不是一名 Web 设计师加上不懂得使用 AE 设计动效,那么获取 Lottie-web 所需的 JSON 文件最直接的方式就是第三方面平,例如,从 LottieFiles 市场上获取:
LottieFies: https://lottiefiles.com/marketplace
你在这个市场上花一定的时间很可能找到适合你所需要的动效。在 LottieFiles 市场上可以购买,也可以找许可证允许的免费JSON文件。不过,大多数情况之下,还是需要自己来创作才能满足更具体的需求,毕竟要在市场上找到符合自己需求的动画数据(JSON)成本还是非常的高。
获取到相应的 JSON 数据之后,你只要像上例那样,替换 loadAnimation 的 path 参数即可:
刚才也提到了,如果要获得符合自己需求的动画效果的 JSON 数据, 那就需要使用相关的设计软件来设计动画,例如 AE(Adobe After Effects)。如何使用 AE 来设计动画效果相关的内容已经超出这节课的范畴,如果你感兴趣的话,可以在网上搜索相关的教程,或者阅读 AE 软件所提供的操作文档。
这里假设你已经会使用 AE 制作自己想要的动画效果,或者说设计师已经向你提供了 AE 制作的动画效果文件。
接着就需要 AE 中导出描述动画效果的 JSON 文件。在这个过程中,不管是 Web 设计师还是 Web 开发者都需要知道。从 AE 中导出来的 JSON 文件是需要提供给 Lottie-web 解析渲染的,因此需要符合 Lottie-web 要求。为了避免不必要的麻烦,可以在 AE 软件中安装 LottieFiles 扩展插件。如此一来,从 AE 导出来的 JSON 文件就是 Lottie-web 所需的文件。
使用 LottieFiles插件还有另一个好处,可以直接在插件中引用 LottieFiles 市场的动效模板文件:
按照前面的示例所示,把导出来的data.json 文件放到 loadAnimation() 中的 path 中:
var animation = lottieWeb.loadAnimation({
// animationData: { /* ... */ },
container: document.getElementById('lottie'), // required
path: './data.json', // required
renderer: 'svg', // required
loop: true, // optional
autoplay: true, // optional
})注意,你也可以将 path 中的 JSON 数据放在 animationData 中:
const animation = lottieWeb.loadAnimation({
// 动效加载到的DOM元素
container: document.getElementById("lottie"), // 必须项
// 包含动效的JSON文件的相对路径,也可以是绝对路径
// 必须项,描述动效的JSON文件,一般由AE软件中导出的JSON文件
// path: "https://lottie.host/6f4ee854-3625-4849-8985-e423a0752949/hZWZsrb0zk.json",
// 动效渲染出来的格式,可以是svg、canvas和html
renderer: "svg", // 必须项,除了svg选择之外还可以是canvas和html
// 用于指定动效是否循环播放,true是循环播放,false不是循环播放
loop: true, // 可选项
// 指定动效是不是加载后就立即播放,true是立即播放,false不是立即播放
autoplay: true, // 可选项
animationData: {"v":"5.2.1","fr":25,"ip":0,"op":45,"w":130,"h":120,"nm":"猫头鹰","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"左眼球","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":25,"s":[96],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":26,"s":[0],"e":[100]},{"t":27}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[44.451,39.813,0],"e":[40.826,40.313,0],"to":[-0.60416668653488,0.08333333581686,0],"ti":[0.60416668653488,-0.08333333581686,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[40.826,40.313,0],"e":[40.826,40.313,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[40.826,40.313,0],"e":[39.951,41,0],"to":[-0.14583332836628,0.11458333581686,0],"ti":[0.14583332836628,-0.11458333581686,0]},{"t":20}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.906,0],[0,-0.906],[0.906,0],[0,0.906]],"o":[[0.906,0],[0,0.906],[-0.906,0],[0,-0.906]],"v":[[0,-1.64],[1.64,0],[0,1.64],[-1.64,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":46,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"左眼珠","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":0,"s":[44.04,41.125,0],"e":[38.978,41.5,0],"to":[-0.84375,0.0625,0],"ti":[0.84375,-0.0625,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":8,"s":[38.978,41.5,0],"e":[38.978,41.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":13,"s":[38.978,41.5,0],"e":[39.79,41.312,0],"to":[0.13541667163372,-0.03125,0],"ti":[-0.13541667163372,0.03125,0]},{"t":20}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0,-2.022],[2.022,0],[0,2.022],[-2.022,0]],"o":[[0,2.022],[-2.022,0],[0,-2.022],[2.022,0]],"v":[[3.661,0],[0,3.661],[-3.661,0],[0,-3.661]],"c":true}],"e":[{"i":[[0,0.025],[2.022,0],[0,-0.025],[-2.022,0]],"o":[[0,-0.025],[-2.022,0],[0,0.025],[2.022,0]],"v":[[3.723,-0.107],[0.063,-0.152],[-3.598,-0.107],[0.063,-0.062]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":26,"s":[{"i":[[0,0.025],[2.022,0],[0,-0.025],[-2.022,0]],"o":[[0,-0.025],[-2.022,0],[0,0.025],[2.022,0]],"v":[[3.723,-0.107],[0.063,-0.152],[-3.598,-0.107],[0.063,-0.062]],"c":true}],"e":[{"i":[[0,-2.022],[2.022,0],[0,2.022],[-2.022,0]],"o":[[0,2.022],[-2.022,0],[0,-2.022],[2.022,0]],"v":[[3.661,0],[0,3.661],[-3.661,0],[0,-3.661]],"c":true}]},{"t":29}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.109803921569,0.21568627451,0.517647058824,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":79,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"右眼球","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":25,"s":[96],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":26,"s":[0],"e":[100]},{"t":27}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[20.263,41.375,0],"e":[16.826,40.75,0],"to":[-0.57291668653488,-0.10416666418314,0],"ti":[0.57291668653488,0.10416666418314,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[16.826,40.75,0],"e":[16.826,40.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[16.826,40.75,0],"e":[18.451,41.813,0],"to":[0.27083334326744,0.17708332836628,0],"ti":[-0.27083334326744,-0.17708332836628,0]},{"t":20}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.906,0],[0,-0.906],[0.906,0],[0,0.906]],"o":[[0.906,0],[0,0.906],[-0.906,0],[0,-0.906]],"v":[[0,-1.64],[1.64,0],[0,1.64],[-1.64,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":46,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"右眼珠","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":0,"s":[20.478,42.027,0],"e":[16.54,41.402,0],"to":[-0.65625,-0.10416666418314,0],"ti":[0.65625,0.10416666418314,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":8,"s":[16.54,41.402,0],"e":[16.54,41.402,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":13,"s":[16.54,41.402,0],"e":[18.603,41.527,0],"to":[0.34375,0.02083333395422,0],"ti":[-0.34375,-0.02083333395422,0]},{"t":20}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0,-2.022],[2.022,0],[0,2.022],[-2.022,0]],"o":[[0,2.022],[-2.022,0],[0,-2.022],[2.022,0]],"v":[[3.661,0],[0,3.661],[-3.661,0],[0,-3.661]],"c":true}],"e":[{"i":[[0,0.025],[2.022,0],[0,-0.025],[-2.022,0]],"o":[[0,-0.025],[-2.022,0],[0,0.025],[2.022,0]],"v":[[3.723,-0.107],[0.063,-0.152],[-3.598,-0.107],[0.063,-0.062]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":26,"s":[{"i":[[0,0.025],[2.022,0],[0,-0.025],[-2.022,0]],"o":[[0,-0.025],[-2.022,0],[0,0.025],[2.022,0]],"v":[[3.723,-0.107],[0.063,-0.152],[-3.598,-0.107],[0.063,-0.062]],"c":true}],"e":[{"i":[[0,-2.022],[2.022,0],[0,2.022],[-2.022,0]],"o":[[0,2.022],[-2.022,0],[0,-2.022],[2.022,0]],"v":[[3.661,0],[0,3.661],[-3.661,0],[0,-3.661]],"c":true}]},{"t":29}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.109803921569,0.21568627451,0.517647058824,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"形状图层 5","sr":1,"ks":{"o":{"a":0,"k":30,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[17.5,40.18,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-4.251,-1.829],[-1.108,-0.012],[-0.01,0],[-1.355,3.042],[0,0]],"o":[[0,0],[-1.829,4.252],[1.019,0.438],[0.01,0],[3.328,0],[0,0],[0,0]],"v":[[-6.601,-6.205],[-6.911,-5.485],[-2.523,5.524],[0.699,6.205],[0.729,6.205],[8.429,1.205],[8.739,0.475]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980392157,0.411764735802,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"形状图层 4","sr":1,"ks":{"o":{"a":0,"k":30,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[41.364,39.93,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-3.261,0],[-1.096,0.476],[1.858,4.277]],"o":[[0,0],[0,0],[1.382,3.182],[1.123,0],[4.277,-1.858],[0,0]],"v":[[6.666,-6.271],[-8.834,0.459],[-8.514,1.189],[-0.765,6.271],[2.596,5.569],[6.976,-5.541]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980392157,0.411764735802,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"形状图层 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[29.172,41.555,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.231,-2.269],[0.419,-0.121],[1.783,0.472],[1.258,2.963],[0,0],[3.104,-0.895],[1.393,5.527],[-0.898,2.084],[0,0],[-6.621,-2.872],[-0.532,-0.152],[-3.228,2.544],[0,0],[0,0],[-1.632,-0.443],[-1.107,0],[-1.182,0.347],[2.009,6.931],[0.216,0.509]],"o":[[2.258,5.236],[-0.401,0.172],[-1.77,0.518],[-3.094,-0.889],[0,0],[-1.246,2.98],[-5.527,1.393],[-0.554,-2.2],[0,0],[-2.871,6.622],[0.507,0.221],[3.936,1.184],[0,0],[0,0],[1.331,1.042],[1.071,0.279],[1.232,0.003],[6.93,-2.012],[-0.157,-0.53],[0,0]],"v":[[20.311,-8.59],[14.931,4.99],[13.701,5.43],[8.271,5.5],[1.391,-0.59],[-1.129,-0.59],[-8.009,5.54],[-20.538,-1.945],[-20.009,-8.55],[-22.529,-9.64],[-15.739,7.55],[-14.179,8.11],[-2.749,5.94],[0.191,9.69],[3.071,5.91],[7.561,8.16],[10.841,8.58],[14.481,8.06],[23.391,-8.13],[22.831,-9.69]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980407,0.411764740944,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"形状图层 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[29,18.125,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.01,21.055],[28.06,8.865],[22.59,6.945],[0.01,17.945],[-22.58,6.945],[-28.05,8.865],[-1.21,20.525]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980392157,0.411764705882,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"形状图层 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[29,18.125,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.949,-0.453],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.949,-0.453],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.08,15.212],[0.08,15.212],[0.08,15.212],[24.39,3.442],[24.39,1.352],[0.08,13.142],[-21.92,2.492],[-21.92,-2.408],[-0.02,8.282],[18.98,-0.988],[18.98,3.112],[20.16,1.872],[21.35,1.982],[21.35,-2.128],[24.35,-3.608],[1.45,-14.758],[-1.55,-14.758],[-24.39,-3.618],[-24.39,-3.618],[-24.39,1.292],[-24.39,1.292],[-24.39,3.362],[0.05,15.202]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980392157,0.411764705882,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"形状图层 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[29.08,36.337,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.27,0],[2.02,-5.62],[5.42,0],[0,-8.73],[-7.27,0],[-1.6,3],[-5.41,0],[0,8.73]],"o":[[-5.42,0],[-2,-5.61],[-7.27,0],[0,8.73],[5.43,0],[1.77,3],[7.27,0],[0,-8.73]],"v":[[12.085,-15.815],[-0.005,-6.255],[-12.095,-15.785],[-25.255,0.015],[-12.095,15.805],[-0.005,10.475],[12.085,15.815],[25.255,0.015]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"头","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":17,"s":[0],"e":[-24]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":25,"s":[-24],"e":[-24]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":29,"s":[-24],"e":[0]},{"t":35}],"ix":10},"p":{"a":0,"k":[70,56.75,0],"ix":2},"a":{"a":0,"k":[29.5,38.75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":58,"h":58,"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"形状图层 13","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[81.594,92.875,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.563],[0,0],[0.563,0],[0,0],[0,0.563],[0,0],[-0.563,0],[0,0]],"o":[[0,0],[0,0.563],[0,0],[-0.563,0],[0,0],[0,-0.563],[0,0],[0.563,0]],"v":[[1.02,-1.54],[1.02,1.54],[0,2.56],[0,2.56],[-1.02,1.54],[-1.02,-1.54],[0,-2.56],[0,-2.56]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.109803921569,0.21568627451,0.517647058824,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"形状图层 10","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[62.5,92.875,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.563],[0,0],[0.563,0],[0,0],[0,0.563],[0,0],[-0.563,0],[0,0]],"o":[[0,0],[0,0.563],[0,0],[-0.563,0],[0,0],[0,-0.563],[0,0],[0.563,0]],"v":[[1.02,-1.54],[1.02,1.54],[0,2.56],[0,2.56],[-1.02,1.54],[-1.02,-1.54],[0,-2.56],[0,-2.56]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.109803921569,0.21568627451,0.517647058824,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"形状图层 12","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[79.094,92.875,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.563],[0,0],[0.563,0],[0,0],[0,0.563],[0,0],[-0.563,0],[0,0]],"o":[[0,0],[0,0.563],[0,0],[-0.563,0],[0,0],[0,-0.563],[0,0],[0.563,0]],"v":[[1.02,-1.54],[1.02,1.54],[0,2.56],[0,2.56],[-1.02,1.54],[-1.02,-1.54],[0,-2.56],[0,-2.56]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.109803921569,0.21568627451,0.517647058824,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"形状图层 9","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[60,92.875,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.563],[0,0],[0.563,0],[0,0],[0,0.563],[0,0],[-0.563,0],[0,0]],"o":[[0,0],[0,0.563],[0,0],[-0.563,0],[0,0],[0,-0.563],[0,0],[0.563,0]],"v":[[1.02,-1.54],[1.02,1.54],[0,2.56],[0,2.56],[-1.02,1.54],[-1.02,-1.54],[0,-2.56],[0,-2.56]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.109803921569,0.21568627451,0.517647058824,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"形状图层 11","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[76.594,92.875,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.563],[0,0],[0.563,0],[0,0],[0,0.563],[0,0],[-0.563,0],[0,0]],"o":[[0,0],[0,0.563],[0,0],[-0.563,0],[0,0],[0,-0.563],[0,0],[0.563,0]],"v":[[1.02,-1.54],[1.02,1.54],[0,2.56],[0,2.56],[-1.02,1.54],[-1.02,-1.54],[0,-2.56],[0,-2.56]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.109803921569,0.21568627451,0.517647058824,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"形状图层 8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[57.5,92.875,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.563],[0,0],[0.563,0],[0,0],[0,0.563],[0,0],[-0.563,0],[0,0]],"o":[[0,0],[0,0.563],[0,0],[-0.563,0],[0,0],[0,-0.563],[0,0],[0.563,0]],"v":[[1.02,-1.54],[1.02,1.54],[0,2.56],[0,2.56],[-1.02,1.54],[-1.02,-1.54],[0,-2.56],[0,-2.56]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.109803921569,0.21568627451,0.517647058824,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"形状图层 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[69.5,78.25,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0.45],[4.035,3.4],[2.122,-0.001],[0.793,0.427],[0.901,-0.004],[0.96,1.846],[-0.121,-5.24],[0,-0.31]],"o":[[0,-0.44],[0.121,-5.275],[-0.939,1.903],[-0.901,-0.006],[-0.792,0.43],[-2.081,0.003],[-3.993,3.395],[0,0.34],[0,0]],"v":[[13.71,7.53],[13.71,6.19],[7.52,-7.53],[2.52,-4.42],[-0.06,-5.08],[-2.64,-4.42],[-7.59,-7.42],[-13.71,6.23],[-13.71,7.23]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.250980392157,0.411764735802,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":8},"nm":"描边 2","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"st","c":{"a":0,"k":[0.250980392157,0.411764735802,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":8},"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"形状图层 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[69.25,78.25,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.044,-1.842],[10.95,0],[0,13.6],[-0.274,1.821]],"o":[[0.289,1.82],[0,13.59],[-10.95,0],[0.039,-1.841],[0,0]],"v":[[19.33,-15.05],[19.83,-9.55],[0,15.05],[-19.83,-9.55],[-19.36,-15.05]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.250980392157,0.411764735802,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":8},"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"形状图层 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[63.5,82.875,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.26,1.9],[-1.91,-0.171],[-0.26,-1.9],[1.91,0.17]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980392157,0.411764735802,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"形状图层 7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75.25,82.75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.26,1.9],[-1.91,0.17],[0.26,-1.9],[1.91,-0.171]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980392157,0.411764735802,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"形状图层 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[69.375,86.375,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.5,1.19],[-1.5,1.19],[-1.5,-1.19],[1.5,-1.19]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980392157,0.411764735802,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"形状图层 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[69.375,79.75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.5,1.19],[-1.5,1.19],[-1.5,-1.19],[1.5,-1.19]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980392157,0.411764735802,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"形状图层 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[69.75,71.75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.605,0],[0,-11.786],[-7.605,0],[0,11.785]],"o":[[-7.605,0],[0,11.785],[7.605,0],[0,-11.786]],"v":[[0,-21.34],[-13.77,0],[0,21.34],[13.77,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.772549079446,0.823529471603,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"形状图层 14","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[69.75,101,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-5.223,2.34]],"o":[[0,0],[0,0],[5.223,2.34],[0,0]],"v":[[3.42,-7.975],[-3.44,-7.975],[-8.21,5.635],[8.21,5.635]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.109803929048,0.215686289469,0.517647058824,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":8},"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"形状图层 16","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[118.5,60,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-48.125,33.438],[-46.062,44.125]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.109803929048,0.215686289469,0.517647058824,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":8},"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"形状图层 15","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[118.5,60,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-50.125,33.125],[-51.875,44.562]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.109803929048,0.215686289469,0.517647058824,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":8},"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"形状图层 17","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[118.5,60,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-80.625,33.125],[-17.25,33.125]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.109803929048,0.215686289469,0.517647058824,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":8},"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":"形状图层 18","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[69.75,97,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-1.906,0],[-1.814,0.677]],"o":[[0,0],[0,0],[1.814,0.677],[1.906,0],[0,0]],"v":[[2.345,-4.428],[-2.355,-4.428],[-5.625,3.412],[0,4.428],[5.625,3.412]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.772549079446,0.823529471603,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"形状图层 20","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[39],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[100],"e":[0]},{"t":23}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[-3],"e":[35]},{"t":23}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[45.438,62.438,0],"e":[15.625,45.375,0],"to":[-4.96875,-2.84375,0],"ti":[19.5104160308838,13.5520830154419,0]},{"t":23}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[50.261,50.261,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.561,0.527],[1,0.28],[0.898,0.477],[0.28,-0.33],[-0.029,-0.231],[0,0],[0.562,-0.479],[-0.82,-0.98],[-1.28,1.06],[0.408,1.219],[0,0],[0,0],[-0.871,-0.234],[-1.149,-0.886]],"o":[[-0.93,-0.84],[-0.96,-0.336],[0,0],[-0.162,0.168],[0,0],[-0.737,0.053],[-1.27,1],[0.82,0.98],[1.044,-0.749],[0,0],[0,0],[0.871,-0.234],[1.384,0.437],[-0.317,-0.701]],"v":[[3.089,-6.46],[-0.911,-8.1],[-3.701,-9.32],[-4.181,-9.08],[-4.391,-8.45],[0.129,3.92],[-1.871,4.74],[-2.701,8.43],[1.079,8.3],[2.149,4.99],[0.584,0.691],[-2.071,-6.6],[0.589,-6.6],[4.419,-4.6]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980392157,0.411764735802,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"形状图层 19","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[51],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[100],"e":[0]},{"t":22}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[28]},{"t":15}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[50.25,57.25,0],"e":[26.438,35.375,0],"to":[-6.71875,-0.45833334326744,0],"ti":[5.96875,15.9583330154419,0]},{"t":22}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.561,0.527],[1,0.28],[0.898,0.477],[0.28,-0.33],[-0.029,-0.231],[0,0],[0.562,-0.479],[-0.82,-0.98],[-1.28,1.06],[0.408,1.219],[0,0],[0,0],[-0.871,-0.234],[-1.149,-0.886]],"o":[[-0.93,-0.84],[-0.96,-0.336],[0,0],[-0.162,0.168],[0,0],[-0.737,0.053],[-1.27,1],[0.82,0.98],[1.044,-0.749],[0,0],[0,0],[0.871,-0.234],[1.384,0.437],[-0.317,-0.701]],"v":[[3.089,-6.46],[-0.911,-8.1],[-3.701,-9.32],[-4.181,-9.08],[-4.391,-8.45],[0.129,3.92],[-1.871,4.74],[-2.701,8.43],[1.079,8.3],[2.149,4.99],[0.133,-0.548],[-2.071,-6.6],[0.589,-6.6],[4.419,-4.6]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980392157,0.411764735802,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":75,"st":0,"bm":0}],"markers":[{"tm":8,"cm":"眼球动作","dr":0},{"tm":20,"cm":"眼球第2次动作","dr":0},{"tm":23,"cm":"眨眼动作","dr":0}]},
});你在浏览器中可以看到相应的效果:
除了使用 AE 之外,你还可以 LottieFiles 提供的在线编辑器,你可以通过该编辑器来创建动画,并导出 Lottie-web 所需要的 JSON 文件:
渲染动画
前面提到过,当你在项目中引入 Lottie-web 之后,它会提供一个 loadAnimation 对象,该对象提供渲染和控制动画的相关参数:
例如:
const animation = lottieWeb.loadAnimation({
// 动效加载到的DOM元素
container: document.getElementById("lottie"), // 必须项
// 包含动效的JSON文件的相对路径,也可以是绝对路径
// 必须项,描述动效的JSON文件,一般由AE软件中导出的JSON文件
path: "https://lottie.host/7401522f-2d8b-4049-ad18-eb0edb6af224/CE9lFrNlEH.json",
// 动效渲染出来的格式,可以是svg、canvas和html
renderer: "svg", // 必须项,除了svg选择之外还可以是canvas和html
// 用于指定动效是否循环播放,true是循环播放,false不是循环播放
loop: true, // 可选项
// 指定动效是不是加载后就立即播放,true是立即播放,false不是立即播放
autoplay: true, // 可选项
});上面代码中的 renderer: "svg" 会将 JSON 数据渲染成 SVG 动画:
要是将 renderer 设置为 "canvas" ,那么会将 JSON 数据渲染成一个 Canvas 动画:
你还可以根据动画的需求来调整 loadAnimation 的参数。这里就不再花更多的时间来详细阐述每个参数的具体功能。
小结
这节课主要和大家一起探讨了 Web 开发动画存在的一些痛点。以此为着手点,探讨了 Web 动画开发的流程差异,并且深入探讨了当下开发 Web 动画的主流方式。即从设计软件中设计动画,然后直接导出所需的 Web 动画。为了让大家能更具体感,还专门向大家演示了如何基于 Lottie-web ,将 AE 设计的动画转换成在 Web 动画。